#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
#define REP(i,n) for(int i=0;i<int(n);++i)
#define REPD(i,n) for(int i=n-1;i>=0;--i)
using namespace std;
const int inf=1<<29;
string s;
string b[20];
int n;
int dp[15][100100];

void go(int bi)
{
    int sl=s.size(),bl=b[bi].size();
    REPD(i,sl)
    {
        if(s.substr(i,bl)!=b[bi])
        {
            dp[bi][i]=(dp[bi][i+1]>=bl-1?dp[bi][i+1]:bl-1)+1;
        }
        else dp[bi][i]=bl-1;
        dp[bi][i]=min(dp[bi][i],sl-i);
    }
}

void getAns()
{
    int pos=-1,len=-1;
    REP(j,s.size())
    {
        int tmin=inf;
        REP(i,n)
        {
            if(dp[i][j]<tmin) tmin=dp[i][j];
        }
        if(tmin>len) len=tmin,pos=j;
    }
    if(pos==-1) puts("0 0");
    else printf("%d %d\n",len,pos);
}
int main()
{
    cin>>s>>n;
    REP(i,n) cin>>b[i];
    REP(i,n) go(i);
    getAns();
	return 0;
}
